package com.gewei.dao;

import com.github.pagehelper.Page;
import com.gewei.pojo.Setmeal;

import java.util.List;
import java.util.Map;

/**
 * 预约管理-体检套餐管理持久层 Dao 接口
 *  本项目是基于 MyBatis 的 Mapper 动态代理技术实现持久层操作，
 *  故只需要提供接口和 Mapper 映射文件，无须提供实现类。
 *
 * @author gewei
 */
public interface SetmealDao {

    /**
     * 新增体检套餐
     *
     * @param setmeal
     */
    void add(Setmeal setmeal);

    /**
     * 设置体检套餐和检查组多对多关系
     *
     * @param map
     */
    void setSetmealAndCheckGroup(Map<String, Integer> map);

    /**
     * 分页查询体检套餐（根据条件查询）
     *
     * @param queryString
     * @return
     */
    Page<Setmeal> selectByCondition(String queryString);

    /**
     * 查询所有体检套餐
     *
     * @return
     */
    List<Setmeal> findAll();

    /**
     * 查询体检套餐（包含套餐基本信息、检查组信息、检查项信息） findById4Detail
     *
     * @param id
     * @return
     */
    Setmeal findById(int id);

    /**
     * 查询体检套餐预约数据
     *
     * @return
     */
    List<Map<String, Object>> findSetMealCount();

    /**
     * 根据体检套餐 id 查询关联的所有检查组 id
     *
     * @param id
     * @return
     */
    List<Integer> findCheckGroupIdsBySetmealId(Integer id);

    /**
     * 编辑体检套餐
     *
     * @param setmeal
     */
    void edit(Setmeal setmeal);

    /**
     * 删除体检套餐关联的检查组，操作中间关系表 t_setmeal_checkgroup 表
     *
     * @param id
     */
    void deleteAssociation(Integer id);

    /**
     * 删除体检套餐
     *
     * @param id
     */
    void deleteById(Integer id);
}
